home *** CD-ROM | disk | FTP | other *** search
- 私製グラフィックライブラリ RIOLIB
-
-
- ===========================================================================
- 序.
- ===========================================================================
-
- High C のグラフィックライブラリは、僕にとっては「遅い」「使いにくい」「マ
- ニュアルがヘボい」の3拍子そろった、たいへん困ったものでした。
- たしかにこのライブラリは、グラフィックを一般的に利用するための機能は非常に
- 充実しています。しかし、僕が TOWNS のグラフィックを使う用途と言えば、
- ・ゲームづくり(それも、アクションゲーム)
- ・お絵描き(または、グラフィックツールづくり)
- の2つしかないのです。High C のグラフィックライブラリは、この2つの点からは、
- かなり使いにくくできているように思います。すくなくとも、今まで MSX2 の明解な
- グラフィック操作体系に慣れてきた僕にとって、このライブラリは「まわりくどい」
- の一言につきます。
- というわけで、MSX-C のグラフィックライブラリに似せて、自分流にライブラリを
- 作ってみました。モットーは「身軽、気軽、手軽」。日頃「もっとラクにグラフィッ
- クが扱えないものか」と感じておられる方は、ぜひ一度お試しください。
-
- P.S. このライブラリは、グラフィック関数のほかに、キーボードやマウスの操作
- 関数も含みます。
-
- ===========================================================================
- 関数一覧
- ===========================================================================
-
-
- ■ グラフィックライブラリ(アセンブラ版)
-
- アセンブリ言語で記述したグラフィックライブラリです。画面モード切り替えなど
- は BIOS に頼っていますが、描点・描線・矩形塗りつぶしはオールアセンブラですの
- で、高速です。
-
- (定数)
- #define DrawNORMAL (int)0 // 描画モード
- #define DrawXOR (int)4
-
- (変数)
- char _egbwork[]; // BIOS のワークエリア
- int _scrmod[2]; // 各ページの画面モード
- int _nowscrmod; // 現在の書き込みページの画面モード
- int _wrtpage; // 現在の書き込みページ
-
- (関数)
- void ginit (void);
- // 初期化
- void gscreen (int mode);
- // 画面モードの設定
- void gwrtpage (int page);
- // 書き込みページの設定
- void gdsploc (int x, int y);
- // 表示位置の設定
- void gscrzoom (int xrate, int yrate);
- // 画面拡大率の設定
- void gdsparea (int xsize, int ysize);
- // 表示範囲の設定
-
- void gpset (int x, int y, int col, int mode);
- // 点を描く
- int gpoint (int x,int y);
- // 画面上の色を読む
- void gline (int x1,int y1,int x2,int y2,int col,int mode);
- // 直線を描く
- void ghline (int x1, int x2, int y, int col, int mode);
- // 水平直線を描く
- void gvline (int x, int y1, int y2,int col, int mode);
- // 垂直直線を描く
- void gboxfill (int x1,int y1,int x2,int y2,int col,int mode);
- // 矩形塗りつぶし(矩形の座標で指定)
- void grboxfill (int x1,int y1,int xlen,int ylen,int col,int mode);
- // 矩形塗りつぶし(矩形の大きさで指定)
- void gboxline (int x1,int y1,int x2,int y2,int col,int mode);
- // 矩形(線描) (矩形の座標で指定)
- void grboxline (int x1,int y1,int xlen,int ylen,int col,int mode);
- // 矩形(線描) (矩形の大きさで指定)
-
-
- ■ グラフィックライブラリ(C言語版)
-
- これは、High C の EGB ライブラリをそのまま呼び出すだけの関数です。しかし、
- High C のライブラリをそのまま使うよりは簡単に呼び出せます。
-
- (変数)
- char *EGB_work;
-
- (関数)
- void grp_init (void);
- void grp_mode (int mode);
- void grp_mode2 (int mode);
- void grp_scrZoom (int xrate, int yrate);
- void grp_cls (void);
- void grp_dispPos (int x, int y);
- int grp_getMode (void);
- int grp_getWrtpage (void);
- void grp_setWrtpage (int page);
-
- void grp_pset (int x, int y, int col, int mode);
- int grp_point (int x, int y);
- void grp_line (int x1, int y1, int x2, int y2, int col, int mode);
- void grp_boxline (int x1, int y1, int xlen, int ylen, int col, int mode);
- void grp_boxfill (int x1, int y1, int xlen, int ylen, int col, int mode);
-
- void grp_getblk (int x1, int y1, int xlen, int ylen, char *buf);
- void grp_putblk (char *data, int x1, int y1);
- void grp_copy (int sx1, int sy1, int sxlen, int sylen, int sp,
- int dx1, int dy1, int dp, int mode );
-
- void grp_setplt (int plt, int rgb); // bit23-16:赤 bit15-8:緑 bit7-0:青
- int grp_getplt (int plt); // bit23-16:赤 bit15-8:緑 bit7-0:青
-
- void grp_putstr (int x, int y, char *str, int col );
-
-
- ■ キーボード、マウス関連
-
- (型)
- typedef struct {
- int x,y;
- int dx,dy;
- char btn1,btn2;
- } MSDAT;
-
- (定数)
- #define OFF (char)0
- #define ON (char)1
- #define OFFON (char)2
- #define ONOFF (char)3
-
- (関数)
- void key_init (void);
- char key_get (void);
- int key_chk (void);
- char key_read (void);
- void key_clrbuf (void);
-
- void minit (void);
- void mend (void);
- void rdmos (MSDAT *msdat);
-
-
- ■ その他
-
- (型)
- typedef struct {
- int year,mon,day, hour,min,sec;
- } TIME;
-
- (関数)
- int extwildcard (char *wildcard, char *namebuf[], int maxnames);
- // ワイルドカードの展開
- void TIFFload (char *fname);
- // 圧縮/非圧縮 TIFF (320*240,32K色) の読み込み
- void TIFFsave (char *fname);
- // 圧縮 TIFF (320*240,32K色) ファイルの作成
- int getftime (char *fname, TIME *timebuf); // 成功すれば 0 を返す
- // ファイルの作成時刻を調べる
- void getnowtime (TIME *timebuf);
- // 現在時刻を調べる
-